package mx.frantor.catalogos.bussines;

import java.util.List;

import flex.messaging.io.ArrayCollection;

import mx.frantor.catalogos.dao.CatalogoProductoDAO;
import mx.frantor.catalogos.dao.ProductosExistenciaDAO;
import mx.frantor.catalogos.daoimp.CatalogoProductoDAOImpl;
import mx.frantor.catalogos.daoimp.ProductosExistenciaDAOImpl;
import mx.frantor.catalogos.entitys.CatalogoProductoEntity;
import mx.frantor.catalogos.entitys.ProductosExistenciasEntity;

public class ProductosExistenciaBussines {
	
	private ProductosExistenciaDAO prodExistDAO = new ProductosExistenciaDAOImpl();
	private CatalogoProductoDAO catProdDAO = new CatalogoProductoDAOImpl();
	
	String res=null;	
	
	public String AgregarProductoExistencia(String nombre, String tipo, Long minimo, String descripcion, Float costo, Float cantidad, String clave){
		ProductosExistenciasEntity prodEntity = new ProductosExistenciasEntity();
		
		prodEntity.setNombre(nombre);
		prodEntity.setTipo(tipo);
		prodEntity.setMinimo(minimo);
		prodEntity.setDescripcion(descripcion);
		prodEntity.setCosto(costo);
		prodEntity.setCantidad(cantidad);
		prodEntity.setClave(clave);
		res = prodExistDAO.agregarProductosExistencias(prodEntity);
		return res;
	}
	
	public String ModificarProductoExistencia(Long idProducto, String nombre, String tipo, Long minimo, String descripcion, Float costo, Float cantidad, String clave){
		ProductosExistenciasEntity prodEntity = new ProductosExistenciasEntity();
		
		prodEntity.setIdProducto(idProducto);
		prodEntity.setNombre(nombre);
		prodEntity.setTipo(tipo);
		prodEntity.setMinimo(minimo);
		prodEntity.setDescripcion(descripcion);
		prodEntity.setCosto(costo);
		prodEntity.setCantidad(cantidad);
		prodEntity.setClave(clave);
		
		res = prodExistDAO.modificarProductosExistencias(prodEntity);
		return res;
	}
	
	public String ModificarProductoExistenciaDirecto(ProductosExistenciasEntity prodEntity){
		
		res = prodExistDAO.modificarProductosExistencias(prodEntity);
		return res;
	}
	
	public String EliminarProductoExistencia(Long idProductosExistencias){
		res = prodExistDAO.eliminarProductosExistencias(idProductosExistencias);
		return res;
	}
	
	public List<ProductosExistenciasEntity> getTodosProductoExistencia(){
		List<ProductosExistenciasEntity> lstProds = prodExistDAO.getTodosProductosExistenciasActivos();
		System.out.println(lstProds.toString());
		return lstProds;
	}
	
	public ProductosExistenciasEntity getProductoExistenciaPorId(Long idProductosExistencias){
		ProductosExistenciasEntity prodE = prodExistDAO.getProductosExistenciasId(idProductosExistencias);
		
		return prodE;
	}
	public List<ProductosExistenciasEntity> getProdExistenciaPorId(Long idProductosExistencias){
		 List<ProductosExistenciasEntity> lstProd = prodExistDAO.getProductosExistenciasPorId(idProductosExistencias);
		 
		return lstProd;
	}
	
	
	public String agregarCatalogoProd(String nombre, String tipo, Long minimo, String descripcion,  Float costo, String clave, ArrayCollection catProds) {
		String res = null;
	
		
		ProductosExistenciasEntity nuevoProd = new ProductosExistenciasEntity();
		//<<----------Pasamos los valores a la entidad para grabar en DB ---------------->>
		nuevoProd.setNombre(nombre);
		nuevoProd.setTipo(tipo);
		nuevoProd.setMinimo(minimo);
		nuevoProd.setDescripcion(descripcion);
		nuevoProd.setCosto(costo);
		nuevoProd.setCantidad ((float) 0.0);
		nuevoProd.setClave(clave);
		res = prodExistDAO.agregarProductosExistencia(nuevoProd, catProds);
				
		return res;
	}
	public String eliminaCatalogoProd(long idProd){
		String res = null;
		try {	
		List<CatalogoProductoEntity> lstCatProd = catProdDAO.getCatalogoPPorIdProducto(idProd);
		
		if(!lstCatProd.isEmpty()){
			for(int cont = 0; cont < lstCatProd.size(); cont++){
				catProdDAO.eliminarCatalogoP(lstCatProd.get(cont).getIdCatalogo());
			}
		}
		res = prodExistDAO.eliminarProductosExistencias(idProd);
		} catch (Exception e) {
			// TODO: handle exception

			System.out.println("Error " + e);
		}
		System.out.println("mensaje" + res);
		return res;

	}
	
	public ProductosExistenciasEntity getProductosPorClave(String clave){
		ProductosExistenciasEntity pExistencia = prodExistDAO.getProductossPorClave(clave);
		return pExistencia;
	}
	
	public String modificarProductosCantidad(Long idProductosExistencias, Float cantidad){
		
		res = prodExistDAO.modificarProductosCantidad(idProductosExistencias, cantidad);
		
		return res;	
	}

	public String restarProductosCantidad(Long idProductosExistencias, Float cantidad){
		
		res = prodExistDAO.restarProductosCantidad(idProductosExistencias, cantidad);
		
		return res;	
	}
	public List<ProductosExistenciasEntity> Stock(){
		List<ProductosExistenciasEntity> pExistencia = prodExistDAO.getStock();
		return pExistencia;
	}
	
}
